home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2010 Summer - Disc 1 / WN_Ete2010_CD1.iso / Onglet5 / Weezo / Weezo setup.exe / {code_appDir} / www / js / viewImage-src.js < prev    next >
Text File  |  2010-05-19  |  25KB  |  796 lines

  1. var controlsLocked=0;
  2. var dragging=false;
  3. var requestInProgress=0;
  4. var fileTotal=0;
  5. var filePos=0;
  6. var border=10;
  7. var slideshowRunning=0;
  8. var slideShowTimer;
  9. var prevPreloaded=0;var nextPreloaded=0; var imgLoaded=0;
  10. var toggleZoomLocked=0;
  11. var loadBuffer;
  12. var fw;var fh;var rw;var rh;var w;var h;
  13. var rot=0;
  14. var pfw;var pfh;var nfw;var nfh;
  15. var nw;var nh;var pw;var ph;
  16. var pTitle;var nTitle;
  17. var aw; var ah; var at; var al;
  18. var zooming=0;
  19. var slideAnimCompleted=1;
  20. var slideAbort=0;
  21. var skipImages=0;
  22. var sx; var sy; var ex; var ey;
  23.  
  24. function next(){
  25.     controlsLocked=1;
  26.     didZoom=0;
  27.     requestInProgress++;
  28.     submitFrm('next');
  29. }
  30. function prev(){
  31.     controlsLocked=1;
  32.     didZoom=0;
  33.     requestInProgress++;
  34.     submitFrm('prev');
  35. }
  36. function init(){
  37.     if(window.orientation!==undefined) updateOrientation(); else resetArea();
  38.  
  39.     if(zoom=='resized') {
  40.         dd.elements['imgDiv'].setInertia(false);
  41.         dd.elements['imgNextDiv'].setInertia(false);
  42.         dd.elements['imgPrevDiv'].setInertia(false);
  43.     }
  44.  
  45.     submitFrm('view');
  46.     if(slideshow) slideshowResume();
  47. }
  48. function setImageData(title, filename, sourceWidth, sourceHeight, pos, total){
  49.     setTitle(title);
  50.     setFilePos(pos,total);
  51.  
  52.     D.comForm.data2.value=filename;
  53.     if(sourceWidth && sourceHeight)    {fw=sourceWidth; fh=sourceHeight;}
  54. }
  55. function setTitle(title){
  56.     dgi('viewImageTitle').innerHTML=title;
  57.     winMe.setCaption(title);
  58.     /*
  59.     dgi('img').title=title;
  60.     dgi('imgNext').title=title;
  61.     dgi('imgPrev').title=title;
  62.     dgi('imgNext').alt=title;
  63.     dgi('imgPrev').alt=title;
  64.     */
  65. }
  66. function setFilePos(newPos,newTotal){
  67.     if(newTotal) fileTotal=newTotal;
  68.     if(newPos=='+') {filePos++; if(filePos>fileTotal) filePos=1}
  69.     else if(newPos=='-') {filePos--; if(filePos<1) filePos=fileTotal}
  70.     else filePos=newPos;
  71.     dgi('filePosDiv').innerHTML=filePos+"/"+fileTotal;
  72. }
  73. function setLoading(l){/*dgi('loading').style.visibility=((l)?'visible':'hidden');*/}
  74. function buttonPrev(){
  75.     if(!slideAnimCompleted) slideAbort--;
  76.     if(controlsLocked || (!slideAnimCompleted) || zooming || dragging) return;
  77.     if(zoom=='full')    slideAnim(1,'prev',0);
  78.     else                slideAnim(slideSteps-1, 'prev', aw/2+al-w/2);
  79. }
  80. function buttonNext(){
  81.     if(!slideAnimCompleted) slideAbort++;
  82.     if(controlsLocked || (!slideAnimCompleted) || zooming || dragging) return;
  83.     if(slideShowTimer)    slideShowTimer=clearTimeout(slideShowTimer);
  84.     if(zoom=='full')    slideAnim(1,'next',0);
  85.     else                slideAnim(slideSteps-1, 'next', aw/2+al-w/2);
  86. }
  87. function rotateLeft(){submitFrm('rotate'+((rot==0)?270:(rot-90)));}
  88. function rotateRight(){submitFrm('rotate'+((rot==270)?0:(rot+90)));}
  89.  
  90. function resizeImg(id,width,height){
  91.     if(!width || !height) return;
  92.     dd.elements[id+'Div'].resizeTo(width,height);
  93.     dgi(id).style.width =width+'px';
  94.     dgi(id).style.height=height+'px';
  95.     if(id=='img') {w=width;h=height;}
  96. }
  97. function resetArea(){
  98.     var ih=winMe.getInnerHeight();
  99.     var iw=winMe.getInnerWidth();
  100.  
  101.     if(window.orientation!==undefined && zoom=='resized'){//iPhone
  102.         var meta=dgn("viewport").getAttribute('content');
  103.         if(meta.indexOf('width=')) {
  104.             meta=meta.substr(meta.indexOf('width=')+6);
  105.             if(meta.indexOf(',')) meta=meta.substr(0,meta.indexOf(','));
  106.             meta=meta.replace(/ /,'');
  107.             if(meta=='device-width') meta=(iorient()?480:268);
  108.             iw=meta;
  109.         }
  110.         meta=dgn("viewport").getAttribute('content');
  111.         if(meta.indexOf('height=')) {
  112.             meta=meta.substr(meta.indexOf('height=')+7);
  113.             if(meta.indexOf(',')) meta=meta.substr(0,meta.indexOf(','));
  114.             meta=meta.replace(/ /,'');
  115.             if(meta=='device-height') meta=(iorient()?320:416);
  116.             ih=meta;
  117.         }
  118.     }
  119.     if(window.orientation!==undefined && zoom=='full' && fw && fh){iw=fw;ih=fh}
  120.  
  121.     setActualHeight(dgi('scrollDiv'),ih - actualOffsetTop(dgi('scrollDiv')));
  122.     aw=iw;ah=ih - actualOffsetTop(dgi('scrollDiv'));
  123.     al=0; at=actualOffsetTop(dgi('scrollDiv'));
  124.     dd.recalc();
  125.     //alert(iw+','+ih)
  126. }
  127. function winResized(ww,wh){
  128.     if(window.orientation!==undefined && ww!==undefined) return;// don't process onresize events on iPhone
  129.     resetArea();
  130.  
  131.     var prevW=rw;
  132.     var prevH=rh;
  133.  
  134.     dims=resizedDimensions(fw,fh); rw=dims[0];rh=dims[1];
  135.  
  136.     if((prevW<rw || prevH<rh) && !imgFullSizeLoaded) {
  137.         dgi('img').src=imgURL.replace(/<WIDTH>/,rw).replace(/<HEIGHT>/,rh).replace(/<ANGLE>/,rot);
  138.     }
  139.  
  140.     if(zoom=='resized') {
  141.         resizeImg('img',rw,rh);
  142.         centerImg();
  143.     }
  144.     else {
  145.         dd.obj=dd.elements['imgDiv'];
  146.         duringDrag();
  147.         dd.obj=null;
  148.     }
  149.  
  150.     dims=resizedDimensions(nfw,nfh)
  151.     nw=dims[0];nh=dims[1];
  152.     resizeImg('imgNext',nw,nh);
  153.  
  154.     dims=resizedDimensions(pfw,pfh)
  155.     pw=dims[0];ph=dims[1];
  156.     resizeImg('imgPrev',pw,ph);
  157.  
  158.     setPrevPos(!dragging);setNextPos(!dragging);
  159. }
  160.  
  161.  
  162.  
  163. function winStateChanged(prevState, newState){
  164.     if(prevState==newState) return;
  165.     if(newState=='max') {
  166.         winMe.setBorderless();
  167.     }
  168.     else winMe.resetBorders();
  169.     if(winMe.isFrameless()){
  170.         dgi('normalSizeButton').style.display=((newState=='max')?'':'none')
  171.         dgi('normalSizeButton2').style.display=((newState=='max')?'':'none')
  172.     }
  173. }
  174.  
  175. function centerImg() {dd.elements['imgDiv'].moveTo(al+aw/2-w/2,at+ah/2-h/2)}
  176. function setNextPos(hide) {
  177.     if(hide)dd.elements['imgNextDiv'].moveTo(aw+1000,ah/2+at-nh/2);
  178.     else    dd.elements['imgNextDiv'].moveTo(dd.elements['imgDiv'].x+w/2+aw-nw/2,ah/2+at-nh/2)
  179. }
  180. function setPrevPos(hide) {
  181.     if(hide)dd.elements['imgPrevDiv'].moveTo(-2000-aw,ah/2+at-ph/2);
  182.     else    dd.elements['imgPrevDiv'].moveTo(dd.elements['imgDiv'].x+w/2-aw-pw/2,ah/2+at-ph/2)}
  183.  
  184. function toggleZoom(center, force){
  185.     if(toggleZoomLocked) return;
  186.     if(!force && (dragCancelOnclick || zooming || dragging || slideshow || mouseY<at || mouseY<dgi('headerNormal').offsetHeight*1.5 || controlsLocked)) return false;
  187.     toggleZoomLocked=1; setTimeout('toggleZoomLocked=0',50);
  188.     if(bDrag && zoom=="resized" && !force){
  189.         if(mouseX<aw/4+al) {buttonPrev();return true;}
  190.         if(mouseX>3*aw/4+al) {buttonNext();return true;}
  191.     }
  192.  
  193.     if(zoom=='resized' && rw==fw) return false;
  194.     zooming=1;
  195.     sx=dd.elements['imgDiv'].x; sy=dd.elements['imgDiv'].y;
  196.     dd.elements['imgDiv'].setDraggable(false);
  197.     dd.elements['imgNextDiv'].setDraggable(false);
  198.     dd.elements['imgPrevDiv'].setDraggable(false);
  199.  
  200.     // Go resized
  201.     if(zoom=='full') {
  202.         ex=Math.floor(aw/2-rw/2)+al;
  203.         ey=Math.floor(ah/2-rh/2)+at;
  204.         setTimeout("submitFrm('resized')",100);
  205.         zoomAnim(zoomSteps,-1);
  206.         if(bBrowser=='iPhone') dd.disabled=0;
  207.     }
  208.     // Go full
  209.     else{
  210.         var targX= - fw * ((mouseX-actualOffsetLeft(dgi('imgDiv')))/w-0.5);
  211.         var targY= - fh * ((mouseY-actualOffsetTop (dgi('imgDiv')))/h-0.5);
  212.         if(center){targX=0;targY=0;}
  213.         ex=targX+aw/2+al-fw/2;
  214.         ey=targY+ah/2+at-fh/2;
  215.  
  216.         if(ex>al || ex<aw-fw+al) ex=(Math.max(Math.min(ex,0),aw-fw+al));
  217.         if(ey>at || ey<ah-fh+at) ey=(Math.max(Math.min(ey,at),ah-fh+at));
  218.         if(fw<=aw) ex=aw/2+al-fw/2;
  219.         if(fh<=ah) ey=ah/2+at-fh/2;
  220.         if(!imgFullSizeLoaded && rw<fw) {
  221.             dgi('imgCacheFull').src=resizedURL(imgURLFull,0,0,rot);
  222.             setLoading(1);
  223.         }
  224.         setPrevPos(1);setNextPos(1);
  225.         setTimeout("submitFrm('fullsize')",100);
  226.         zoomAnim(0,1);
  227.         dd.moveFunc=function(e){return true}
  228.         if(bBrowser=='iPhone') dd.disabled=1;
  229.     }
  230.     return true;
  231. }
  232.  
  233. function zoomAnim(step,dir){
  234.     if((dir<0 && step==0) || (dir>0 && step==zoomSteps)) {
  235.         if(dir>0) zoom='full'; else zoom='resized';
  236.         zooming=0; didZoom=1;
  237.         if(!slideshow) {
  238.             dd.elements['imgDiv'].setDraggable(true);
  239.             dd.elements['imgNextDiv'].setDraggable(true);
  240.             dd.elements['imgPrevDiv'].setDraggable(true);
  241.         }
  242.         dd.elements['imgDiv'].setInertia(zoom=='full');
  243.         dd.elements['imgNextDiv'].setInertia(zoom=='full');
  244.         dd.elements['imgPrevDiv'].setInertia(zoom=='full');
  245.         if(adaptViewport) {
  246.             if(zoom=='full') {
  247.                 dgn('viewport').setAttribute("content", "width="+fw+", height="+fh+", user-scalable=yes");
  248.                 dgi('imageFrameBody').style.overflow='';
  249.                 dgi('frame1').style.overflow='';
  250.                 D.body.style.width=fw+'px'; D.body.style.height=fh+'px';
  251.             }
  252.             else{
  253.                 if(iorient()==0){ // portrait
  254.                     dgn('viewport').setAttribute("content", "width=320, height=416, user-scalable=no, minimum-scale=1, maximum-scale=1, initial-scale=1");
  255.                     D.body.style.width='320px'; D.body.style.height='416px';
  256.                 }
  257.                 if(iorient()==1){ // landscape
  258.                     dgn('viewport').setAttribute("content", "width=480, height=268, user-scalable=no, minimum-scale=1, maximum-scale=1, initial-scale=1");
  259.                     D.body.style.width='480px'; D.body.style.height='268px';
  260.                 }
  261.                 dgi('imageFrameBody').style.overflow='hidden';
  262.                 dgi('frame1').style.overflow='hidden';
  263.             }
  264.             winResized();
  265.         }
  266.         return;
  267.     }
  268.     step+=dir;
  269.     var animPerc=(dir>0)?step/zoomSteps:((zoomSteps-step)/zoomSteps);
  270.  
  271.     w=rw+(fw-rw)*step/zoomSteps; h=rh+(fh-rh)*step/zoomSteps;
  272.     resizeImg('img',w,h);
  273.  
  274.     dd.elements['imgDiv'].moveTo((sx+(ex-sx)*animPerc),(sy+(ey-sy)*animPerc));
  275.  
  276.     setTimeout('zoomAnim('+step+','+dir+')',1);
  277. }
  278.  
  279. function slideAnim(step, dir, startX){
  280.     step--;
  281.     if(zoom=='resized'){
  282.         if(dir=='cancel')        targetX=(al+aw/2-w/2);
  283.         else if(dir=='next')    targetX=(al+aw/2-w/2-aw);
  284.         else if(dir=='prev')    targetX=(al+aw/2-w/2+aw);
  285.  
  286.         var perc=Math.pow(step/slideSteps,((dir=='cancel')?3:2));
  287.         dd.elements['imgDiv'].moveTo    (targetX+(startX-targetX)*perc,at+ah/2-h/2);
  288.         setNextPos();
  289.         setPrevPos();
  290.     }
  291.     slideAnimCompleted=0;
  292.  
  293.     //if(step==slideSteps-1 && (dir=='next'||dir=='prev')) skipImages+=(dir=='next')?1:-1;
  294.     
  295.     /**
  296.      * Anim completed
  297.      */
  298.     if(slideAbort) step=0;
  299.     if(step<=0){
  300.         dragging=0; loadBuffer=0;
  301.         disableImgOnload=1;
  302.         dgi('imgCacheFull').src='';
  303.  
  304.         if(requestInProgress>0 && !slideAbort) {
  305.             wl.asr.cancelAll();
  306.             skipImages+=(dir=='next')?1:-1;
  307.             requestInProgress--;
  308.         }
  309.  
  310.         if(dir=='prev'){
  311.             nTitle=dgi('viewImageTitle').innerHTML; setTitle(pTitle);
  312.             setFilePos('-');
  313.             if(!slideAbort) prev();
  314.             dgi('imgNext').src=dgi('img').src;
  315.             resizeImg('imgNext',w,h);
  316.             nfw=fw;nfh=fh;nw=w;nh=h;
  317.  
  318.             imgLoaded=0;
  319.  
  320.             swapImgs('imgPrev','img');
  321.  
  322.             fw=pfw;fh=pfh;
  323.             dims=resizedDimensions(fw,fh); rw=dims[0];rh=dims[1];
  324.             if(zoom=='resized') {w=pw;h=ph;} else {w=fw;h=fh;}
  325.  
  326.             //resizeImg('img',w,h); centerImg();
  327.             if(zoom=='full') resizeImg('img',w,h); centerImg();
  328.             //dgi('img').style.visibility="visible";
  329.  
  330.             dgi('imgPrev').style.visibility="hidden";
  331.  
  332.             dgi('imgPrev').src=emptySrc;
  333.             dgi('imgCachePrev').src=emptySrc;
  334.             prevPreloaded=false; nextPreloaded=true;
  335.         }
  336.         if(dir=='next'){
  337.             pTitle=dgi('viewImageTitle').innerHTML; setTitle(nTitle);
  338.             setFilePos('+');
  339.             if(!slideAbort) next();
  340.             dgi('imgPrev').src=dgi('img').src;
  341.             resizeImg('imgPrev',w,h);
  342.             pfw=fw;pfh=fh;pw=w;ph=h;
  343.  
  344.             imgLoaded=0;
  345.  
  346.             swapImgs('img','imgNext');
  347.  
  348.             fw=nfw;fh=nfh;
  349.             dims=resizedDimensions(fw,fh); rw=dims[0];rh=dims[1];
  350.             if(zoom=='resized') {w=nw;h=nh;} else {w=fw;h=fh;}
  351.  
  352.             //resizeImg('img',w,h); centerImg();
  353.             if(zoom=='full') resizeImg('img',w,h); centerImg();
  354.             //dgi('img').style.visibility="visible";
  355.  
  356.             dgi('imgNext').style.visibility="hidden";
  357.  
  358.             dgi('imgNext').src=emptySrc;
  359.             dgi('imgCacheNext').src=emptySrc;
  360.             prevPreloaded=true; nextPreloaded=false;
  361.         }
  362.         setPrevPos(1);
  363.         setNextPos(1);
  364.         slideAnimCompleted=1;
  365.         disableImgOnload=0;
  366.         if(slideAbort){
  367.             if(slideAbort>0){
  368.                 slideAbort--; skipImages++;
  369.                 if(zoom=='full')    slideAnim(1,'next',0);
  370.                 else                slideAnim(slideSteps-1, 'next', aw/2+al-w/2);
  371.             }
  372.             else{
  373.                 slideAbort++; skipImages--;
  374.                 if(zoom=='full')    slideAnim(1,'prev',0);
  375.                 else                slideAnim(slideSteps-1, 'prev', aw/2+al-w/2);
  376.             }
  377.         }
  378.     }
  379.     else setTimeout('slideAnim('+step+',"'+dir+'",'+startX+')',1);
  380. }
  381. function swapImgs(id1,id2){
  382.     dgi(id1).id='swapId';
  383.     dgi(id2).id=id1;
  384.     dgi('swapId').id=id2;
  385.  
  386.     dgi(id1+'Div').id='swapId';
  387.     dgi(id2+'Div').id=id1+'Div';
  388.     dgi('swapId').id=id2+'Div';
  389.  
  390.     var tmp=dd.elements[id2+'Div'];
  391.     dd.elements[id2+'Div']=dd.elements[id1+'Div'];
  392.     dd.elements[id1+'Div']=tmp;
  393. }
  394. function my_asUpdt(dataName,dataValue){
  395.     sTimeout=dataValue*1000;
  396.     if(slideshowRunning && slideShowTimer){
  397.         clearTimeout(slideShowTimer);
  398.         slideShowTimer=setTimeout("buttonNext()",sTimeout);
  399.     }
  400.     dgi("asUpdt"+SLIDESHOW_TIMER_CONTROL_NAME+"_thumb").title=dataValue+secCaption;
  401.     dgn("asUpdt"+SLIDESHOW_TIMER_CONTROL_NAME).title=dataValue+secCaption;
  402. }
  403. function duringDrag(){
  404.     if(dd.obj.name!='imgDiv' && dd.obj.name!='imgPrevDiv' && dd.obj.name!='imgNextDiv') return;
  405.     if(zooming) return;
  406.  
  407.     /*if(controlsLocked) return dd.obj.moveTo(dd.obj.pickX,dd.obj.pickY);*/
  408.     if(zoom=='resized'){
  409.         dragging=1;
  410.         var posX=dd.obj.pickX+((mouseX-dd.obj.pickMouseX<0)?-1:1)*Math.pow(Math.abs(mouseX-dd.obj.pickMouseX),1.0);
  411.         posX=Math.max(Math.min(posX,3*aw/2-w/2),-w/2-aw/2)
  412.         dd.obj.moveTo(posX,at+ah/2-h/2);
  413.         setNextPos();
  414.         setPrevPos();
  415.     }
  416.     else{
  417.         if(adaptViewport) {
  418.             var scx=dd.obj.x; var scy=dd.obj.y;
  419.             dd.obj.moveTo(al,at);
  420.             window.scrollTo(-scx-al,-scy-at)
  421.             return;
  422.         }
  423.         var corX=dd.obj.x;
  424.         var corY=dd.obj.y;
  425.         if((dd.obj.x>al || dd.obj.x<aw+al-w) && fw>aw) corX=Math.max(Math.min(dd.obj.x,al),aw+al-w);
  426.         else if(fw<aw) corX=aw/2+al-fw/2;
  427.         if((dd.obj.y>at || dd.obj.y<ah+at-h) && fh>ah) corY=Math.max(Math.min(dd.obj.y,at),ah+at-h)
  428.         else if(fh<ah) corY=ah/2+at-fh/2;
  429.         if(corX!=dd.obj.x || corY!=dd.obj.y) dd.obj.moveTo(corX,corY);
  430.     }
  431. }
  432. function preDrop(){
  433.     if(zoom=='full' /*|| controlsLocked*/ || slideshow) return;
  434.     var dt=(new Date()).getTime()-dd.obj.pickDate;
  435.     if(dragging && dt<300 && Math.abs(dd.obj.mdx)<=30) {
  436.         if(toggleZoom(0,1)) {dragging=0;return;}
  437.     }
  438.     if(!dragging) return;
  439.     if        (dd.obj.mdx> 0.30*aw || (dd.obj.mdx> 30 && dt<300)) slideAnim(slideSteps-1, 'prev', dd.obj.x);
  440.     else if    (dd.obj.mdx<- 0.30*aw || (dd.obj.mdx<-30 && dt<300)) slideAnim(slideSteps-1, 'next', dd.obj.x);
  441.     else slideAnim(slideSteps-1, 'cancel', dd.obj.x);
  442. }
  443.  
  444. function submitFrm(action){
  445.     fillAndSubmit(undefined,undefined,action+((skipImages!=0)?'/'+skipImages:''),(aw-border) + "x" + (ah-border),true);
  446. }
  447.  
  448. function resizedDimensions(sourceWidth, sourceHeight){
  449.     var aaw=(aw-border);
  450.     var aah=(ah-border);
  451.     var ir=sourceWidth/sourceHeight;
  452.     var rr=aaw/aah;
  453.  
  454.     if(ir>=rr) {resW=aaw;resH=aaw/ir;}
  455.     else {resW=aah*ir;resH=aah;}
  456.     if(resW>sourceWidth) {resW=sourceWidth;resH=sourceHeight;}
  457.     resW=Math.floor(resW);resH=Math.floor(resH);
  458.     return new Array(resW, resH);
  459. }
  460. function resizedURL(templateURL, sourceWidth, sourceHeight, rotation, preview){
  461.     if(rotation==undefined) rotation=0;
  462.  
  463.     var resW, resH;
  464.  
  465.     if(!sourceWidth || !sourceHeight){
  466.         resW=0;resH=0;
  467.     }
  468.     else{
  469.         var aaw=(aw-border);
  470.         var aah=(ah-border);
  471.         if(preview) {aaw/=4; aah/=4;}
  472.  
  473.         var ir=sourceWidth/sourceHeight;
  474.         var rr=aaw/aah;
  475.  
  476.         if(ir>=rr) {resW=aaw;resH=aaw/ir;}
  477.         else {resW=aah*ir;resH=aah;}
  478.         if(resW>=sourceWidth) {resW='';resH='';}
  479.         resW=Math.floor(resW);resH=Math.floor(resH);
  480.     }
  481.     return templateURL.replace(/<WIDTH>/,resW).replace(/<HEIGHT>/,resH).replace(/<ANGLE>/,rotation);
  482. }
  483.  
  484. /**
  485.  * IMG ONLOAD
  486.  */
  487. var disableImgOnload=0;
  488. function loaded(id){
  489.     if(disableImgOnload) return;
  490.     var obj=dgi(id);
  491.     if(!obj.src || obj.src.indexOf('/gfx/v.gif')!=-1) return;
  492.     switch(id){
  493.         case 'img':
  494.             dgi('img').style.visibility='visible';
  495.             setLoading(false);
  496.             imgLoaded=1;
  497.             if(slideshowRunning && !slideShowTimer) slideShowTimer=setTimeout("buttonNext()",sTimeout);
  498.             if(phpBrowser=='opera') return;
  499.             break;
  500.         case 'imgCacheFull':
  501.             dgi('img').src=obj.src;
  502.             resizeImg('img',w,h);
  503.             dgi('img').style.visibility='visible';
  504.             setLoading(false);
  505.             imgLoaded=1;
  506.             imgFullSizeLoaded=1;
  507.             obj.src='';
  508.             return;
  509.             break;
  510.         case 'imgNext':
  511.             var dims=resizedDimensions(nfw,nfh);
  512.             nw=dims[0]; nh=dims[1];
  513.             if(!dragging) setNextPos(1); else setNextPos();
  514.             resizeImg('imgNext',nw,nh);
  515.             dgi('imgNext').style.visibility="visible";
  516.             nextPreloaded=true;
  517.             break;
  518.         case 'imgPrev':
  519.             var dims=resizedDimensions(pfw,pfh);
  520.             pw=dims[0]; ph=dims[1];
  521.             if(!dragging) setPrevPos(1); else setPrevPos();
  522.             resizeImg('imgPrev',pw,ph);
  523.             dgi('imgPrev').style.visibility="visible";
  524.             prevPreloaded=true;
  525.             break;
  526.         case 'imgCacheNext':
  527.             dgi('imgNext').src=dgi('imgCacheNext').src;
  528.             nextPreloaded=true;
  529.             break;
  530.         case 'imgCachePrev':
  531.             dgi('imgPrev').src=dgi('imgCachePrev').src;
  532.             prevPreloaded=true;
  533.             break;
  534.  
  535.     }
  536.     proceedLoadBuffer();
  537. }
  538. function proceedLoadBuffer(){
  539.     if(!loadBuffer || loadBuffer.length==0) return;
  540.     switch(loadBuffer.shift()) {
  541.          case 'prevSmall':
  542.         if(reducedPreview) dgi('imgPrev').src=resizedURL(imgURLPrev,pfw,pfh,0,true);
  543.         break;
  544.          case 'prevResized':
  545.         dgi('imgCachePrev').src=resizedURL(imgURLPrev,nfw,nfh);
  546.         break;
  547.          case 'prevFull':
  548.         dgi('imgCachePrev').src=resizedURL(imgURLPrev,0,0);
  549.         break;
  550.          case 'nextSmall':
  551.         if(reducedPreview) dgi('imgNext').src=resizedURL(imgURLNext,nfw,nfh,0,true);
  552.         break;
  553.          case 'nextResized':
  554.         dgi('imgCacheNext').src=resizedURL(imgURLNext,nfw,nfh);
  555.         break;
  556.          case 'nextFull':
  557.         dgi('imgCacheNext').src=resizedURL(imgURLNext,0,0);
  558.         break;
  559.     }
  560. }
  561. function loadProceed(updatePrevNext){
  562.     setLoading(true);
  563.  
  564.     var url;
  565.  
  566.     if(zoom=='resized') {
  567.         imgFullSizeLoaded=false;
  568.         dims=resizedDimensions(fw,fh);rw=dims[0];rh=dims[1];
  569.         resizeImg('img',rw,rh);
  570.         centerImg();
  571.         if(rw==fw && rh==fh) url=resizedURL(imgURLFull,0,0,rot); // If resized size == full size, use full-size URL
  572.         else url=resizedURL(imgURL,fw,fh,rot);
  573.     }
  574.     else {
  575.         imgFullSizeLoaded=true;
  576.         w=fw;h=fh;resizeImg('img',fw,fh);centerImg();
  577.         dims=resizedDimensions(fw,fh);rw=dims[0];rh=dims[1];
  578.         url=resizedURL(imgURLFull,0,0,rot);
  579.     }
  580.     dgi('img').src=url;
  581.  
  582.     if(adaptViewport) updateOrientation();
  583.  
  584.     var dims=resizedDimensions(nfw,nfh); nw=dims[0]; nh=dims[1];
  585.     resizeImg('imgNext',nw,nh); setNextPos();
  586.     dims    =resizedDimensions(pfw,pfh); pw=dims[0]; ph=dims[1];
  587.     resizeImg('imgPrev',pw,ph);    setPrevPos();
  588.  
  589.     if(updatePrevNext) {
  590.         if(reducedPreview) loadBuffer=new Array('nextSmall', 'prevSmall', 'nextResized', 'prevResized');
  591.         else loadBuffer=new Array('nextResized', 'prevResized');
  592.     }
  593.     controlsLocked=0;
  594.     if(phpBrowser=='opera') proceedLoadBuffer();
  595. }
  596. function nextProceed(resetImgDims){
  597.     skipImages=0;
  598.     if(requestInProgress>0) requestInProgress--;
  599.  
  600.     if(!slideAnimCompleted) return;
  601.  
  602.     if(!slideAnimCompleted) return setTimeout("nextProceed("+resetImgDims+")",10);
  603.     if(!imgLoaded) setLoading(true);
  604.     if(reducedPreview)
  605.         loadBuffer=new Array('nextSmall', (zoom=='full')?'nextFull':'nextResized');
  606.     else
  607.         loadBuffer=new Array((zoom=='full')?'nextFull':'nextResized');
  608.  
  609.     // Reset current image dimension and position if some images have been skipped
  610.     var dims;
  611.     if(resetImgDims){
  612.         dims=resizedDimensions(fw,fh); rw=dims[0];rh=dims[1];
  613.         if(zoom=='resized') {
  614.             resizeImg('img',rw,rh);
  615.             centerImg();
  616.         }
  617.     }
  618.  
  619.     dims=resizedDimensions(nfw,nfh); nw=dims[0]; nh=dims[1];
  620.     resizeImg('imgNext',nw,nh); setNextPos();
  621.  
  622.     controlsLocked=0;
  623.     var url; var i=0;
  624.  
  625.     if(zoom=='resized') {
  626.         imgFullSizeLoaded=0;
  627.         if(rw==fw && rh==fh) url=resizedURL(imgURLFull,0,0,rot); // If resized size == full size, use full-size URL
  628.         else url=resizedURL(imgURL,fw,fh,rot);
  629.         dgi('img').src=url;
  630.         while(dgi('img').src.indexOf('%3CANGLE%')!=-1 && ++i<10) dgi('img').src=url;
  631.     }
  632.     else {
  633.         if(!zooming && !didZoom) {
  634.             w=fw;h=fh;
  635.             centerImg();
  636.         }
  637.         url=resizedURL(imgURLFull,0,0,rot);
  638.         dgi('imgCacheFull').src=url;
  639.         while(dgi('imgCacheFull').src.indexOf('%3CANGLE%')!=-1 && ++i<10) dgi('imgCacheFull').src=url; // IE WA
  640.     }
  641.  
  642.     if(adaptViewport) updateOrientation();
  643.  
  644.     if(imgLoaded || phpBrowser=='opera' || bBrowser=='iPhone') {setLoading(false); proceedLoadBuffer();}
  645. }
  646. function prevProceed(resetImgDims){
  647.     if(requestInProgress>0) requestInProgress--;
  648.     skipImages=0;
  649.     if(!slideAnimCompleted) return setTimeout("prevProceed("+resetImgDims+")",10);
  650.     if(!imgLoaded) setLoading(true);
  651.     if(reducedPreview)
  652.         loadBuffer=new Array('prevSmall', (zoom=='full')?'prevFull':'prevResized');
  653.     else
  654.         loadBuffer=new Array((zoom=='full')?'prevFull':'prevResized');
  655.  
  656.  
  657.     // Reset current image dimension and position if some images have been skipped
  658.     var dims;
  659.     if(resetImgDims){
  660.         dims=resizedDimensions(fw,fh); rw=dims[0];rh=dims[1];
  661.         if(zoom=='resized') {
  662.             resizeImg('img',rw,rh);
  663.             centerImg();
  664.         }
  665.     }
  666.  
  667.     dims=resizedDimensions(pfw,pfh); pw=dims[0]; ph=dims[1];
  668.     resizeImg('imgPrev',pw,ph);    setPrevPos();
  669.  
  670.     controlsLocked=0;
  671.     var url; var i=0;
  672.  
  673.     if(zoom=='resized') {
  674.         imgFullSizeLoaded=false;
  675.         if(rw==fw && rh==fh) url=resizedURL(imgURLFull,0,0,rot); // If resized size == full size, use full-size URL
  676.         else url=resizedURL(imgURL,fw,fh,rot);
  677.         dgi('img').src=url;
  678.         while(dgi('img').src.indexOf('%3CANGLE%')!=-1 && ++i<10) dgi('img').src=url;
  679.     }
  680.     else {
  681.         if(!zooming && !didZoom) {
  682.             w=fw;h=fh;
  683.             centerImg();
  684.         }
  685.         url=resizedURL(imgURLFull,0,0,rot);
  686.         dgi('imgCacheFull').src=url;
  687.         while(dgi('imgCacheFull').src.indexOf('%3CANGLE%')!=-1 && ++i<10) dgi('imgCacheFull').src=url; // IE WA
  688.     }
  689.  
  690.     if(adaptViewport) updateOrientation();
  691.  
  692.     if(imgLoaded || phpBrowser=='opera' || bBrowser=='iPhone') {setLoading(false); proceedLoadBuffer();}
  693. }
  694.  
  695. function toggleSlideshow(ns){
  696.     if(slideshow==ns) return;
  697.     if(!slideshow && zoom=='full') toggleZoom(true,true);
  698.     slideshow=ns;
  699.     var tmpH=dgi('headerNormal').offsetHeight;
  700.     dgi('headerNormal').style.display=((slideshow)?'none':'');
  701.     dgi('headerSlideshow').style.top=((slideshow)?'':'-1000px');
  702.     if(slideshow){
  703.         dgi('frame1').className='blackFrame'; D.body.style.background='black';
  704.         dd.elements['imgDiv'].setDraggable(false);
  705.         dd.elements['imgNextDiv'].setDraggable(false);
  706.         dd.elements['imgPrevDiv'].setDraggable(false);
  707.         dd.recalc();
  708.         eval("controlSliderInit"+SLIDESHOW_TIMER_CONTROL_NAME+"()");
  709.         slideshowResume();
  710.     }
  711.     else{
  712.         slideshowPause();
  713.         dgi('frame1').className='frame1'; D.body.style.background='';
  714.         if(winMe.isBorderless()) winMe.resetBorders();
  715.         dd.elements['imgDiv'].setDraggable(true);
  716.         dd.elements['imgNextDiv'].setDraggable(true);
  717.         dd.elements['imgPrevDiv'].setDraggable(true);
  718.         winMe.setCaption(defaultTitle);
  719.     }
  720.     winResized();
  721.     submitFrm('toggleSlideshow');
  722. }
  723. function slideshowPause(){
  724.     dgi('slideShowPauseBt').style.display='none';
  725.     dgi('slideShowResumeBt').style.display='';
  726.     slideshowRunning=0;
  727.     slideShowTimer=clearTimeout(slideShowTimer);
  728. }
  729. function slideshowResume(){
  730.     dgi('slideShowPauseBt').style.display='';
  731.     dgi('slideShowResumeBt').style.display='none';
  732.     slideshowRunning=1;
  733.     slideShowTimer = setTimeout("buttonNext()",sTimeout);
  734. }
  735. function keyPressed(e){
  736.     if(zooming) return;
  737.     if (e.keyCode) kc=e.keyCode; else kc=e.which;
  738.     if(kc==27) winMe.closeMe(); // Esc
  739.     if((kc==43 || kc==107) && zoom=='resized') {
  740.         if(!slideshow && !dd.elements['imgDiv'].isLaunched) toggleZoom(1,1); // plus
  741.     }
  742.     if((kc==45 || kc==109) && zoom=='full') {
  743.         if(!slideshow && !dd.elements['imgDiv'].isLaunched) toggleZoom(0,1); // minus
  744.     }
  745.     if((kc==37 || kc==33 || kc==178 || kc==33) && zoom=='resized') buttonPrev();
  746.     if((kc==39 || kc==34 || kc==177 || kc==34) && zoom=='resized') buttonNext();
  747.     if(kc==13) buttonNext(); // enter
  748.     if(kc==32 && slideshow) {if(dgi('slideShowPauseBt').style.display=='none') slideshowResume(); else slideshowPause();}
  749.     else if(kc==32) buttonNext(); // Space
  750.     if(zoom=='full' && ((kc>36 && kc<41) || (kc>174 && kc<179) || (kc==33 || kc==34))){
  751.         var step=aw/4/100;
  752.         if(kc==175 || kc==38) dd.elements['imgDiv'].launch(0,step); // up
  753.         if(kc==176 || kc==40) dd.elements['imgDiv'].launch(0,-step); // down
  754.         if(kc==177 || kc==39) dd.elements['imgDiv'].launch(-step,0); //right
  755.         if(kc==178 || kc==37) dd.elements['imgDiv'].launch(step,0); // left
  756.         if(kc==33) dd.elements['imgDiv'].launch(0,step*4);//pgup
  757.         if(kc==34) dd.elements['imgDiv'].launch(0,-step*4);//pgdown
  758.  
  759.         var corX=dd.elements['imgDiv'].x;
  760.         var corY=dd.elements['imgDiv'].y;
  761.         if((dd.elements['imgDiv'].x>al || dd.elements['imgDiv'].x<aw+al-w) && fw>aw) corX=Math.max(Math.min(dd.elements['imgDiv'].x,al),aw+al-w);
  762.         else if(fw<aw) corX=aw/2+al-fw/2;
  763.         if((dd.elements['imgDiv'].y>at || dd.elements['imgDiv'].y<ah+at-h) && fh>ah) corY=Math.max(Math.min(dd.elements['imgDiv'].y,at),ah+at-h)
  764.         else if(fh<ah) corY=ah/2+at-fh/2;
  765.         if(corX!=dd.elements['imgDiv'].x || corY!=dd.elements['imgDiv'].y) dd.elements['imgDiv'].moveTo(corX,corY);
  766.  
  767.     }
  768.     return false;
  769. }
  770. function updateOrientation(){
  771.     window.scrollTo(0,1);
  772.     var o=iorient();
  773.     if(zoom=='resized' || !fw){
  774.         if(o==0){ // portrait
  775.             dgn('viewport').setAttribute("content", "width=320, height=416, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1");
  776.             D.body.style.width='320px'; D.body.style.height='416px';
  777.         }
  778.         if(o==1){ // landscape
  779.             dgn('viewport').setAttribute("content", "width=480, height=268, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1");
  780.             D.body.style.width='480px'; D.body.style.height='268px';
  781.         }
  782.     }
  783.     else{
  784.         if(fw) dgn('viewport').setAttribute("content", "width="+fw+", height="+fh+", user-scalable=yes");
  785.     }
  786.     winResized();
  787.     W.scrollTo(0,1);
  788. }
  789. function iorient(){return (Math.abs(window.orientation/90)%2)}
  790. function bgClick(){
  791.     if(bDrag) return;
  792.     if(toggleZoomLocked) return;
  793.     if(mouseY<at || mouseY<dgi('headerNormal').offsetHeight*1.5 || mouseY<dgi('headerSlideshow').offsetHeight*1.5) return;
  794.     if(mouseX<aw/2+al) buttonPrev(); else buttonNext();
  795. }
  796.